package com.lj.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lj.mp.standard.StandardService;
import com.lj.sys.entity.SysUser;
import com.lj.sys.param.SysUserChangePasswordParam;
import com.lj.sys.param.SysUserPageParam;
import com.lj.sys.param.SysUserSaveParam;
import com.lj.sys.param.SysUserUpdateParam;
import com.lj.sys.result.SysUserInfoResult;

import java.util.List;

/**
 * <p>
 * 系统用户 服务类
 * </p>
 *
 * @author lj
 * @since 2024-08-09
 */
public interface SysUserService extends StandardService<SysUser> {

    default SysUser getUserByUserName(String userName) {
        return getOne(lambdaQueryWrapper().eq(SysUser::getUserName, userName));
    }

    default SysUser getUserByMobile(String mobile) {
        return getOne(lambdaQueryWrapper().eq(SysUser::getMobile, mobile));
    }

    IPage<SysUserInfoResult> page(SysUserPageParam param);

    SysUserInfoResult info(Long id);

    void save(SysUserSaveParam param);

    void update(SysUserUpdateParam param);


    /**
     * 查询指定部门下的所有用户
     *
     * @param deptIdList 指定部门id列表
     * @return 指定部门下的所有用户
     */
    default List<SysUser> getSysUserByDeptId(List<Long> deptIdList) {
        return list(lambdaQueryWrapper().in(SysUser::getDeptId, deptIdList));
    }

    /**
     * 批量删除用户
     *
     * @param ids 用户id列表
     */
    void delete(List<Long> ids);

    /**
     * 修改密码
     *
     * @param param 修改密码参数
     */
    void changePassword(SysUserChangePasswordParam param);
}
